@微光
3年前 提问
1个回答

PHP 代码审计特殊函数有什么

房乐
3年前

信息泄漏

bool phpinfo([int $what=INFO_ALL])

输出PHP当前状态的大量信息, 包含了PHP编译选项、启用的扩展、PHP版本、服务器信息和环境变量(如果编译为一个模块的话) 、PHP环境变量、操作系统版本信息、path变量、配置选项的本地值和主值、HTTP头和PHP授权信息(License) 。

软连接-读取文件内容

bool symlink(string $target, string $link)

symlink() 对于已有的target建立一个名为link的符号连接。

string readlink (string $path)

readlink() 和同名的C函数做同样的事, 返回符号连接的内容。

环境变量

string getenv(string $varname)

获取一个环境变量的值。

bool putenv(string $setting)

添加setting到服务器环境变量。环境变量仅存活于当前请求期间。在请求结束时环境会恢复到初始状态。

加载扩展

bool dl(string $library)

载入指定参数library的PHP扩展。

配置相关

string ini_get(string $varname)

成功时返回配置选项的值。

string ini_set(string $varname, string $new value)
string ini_alter(string $varname, string $new value)

设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。

void ini_restore(string $varname)

恢复指定的配置选项到它的原始值。

数字判断

bool is_numeric(mixed $var)

如果var是数字和数字字符串则返回TRUE, 否则返回FALSE。

仅用is_numeric判断而不用intval转换就有可能插入16进制的字符串到数据库, 进而可能导致sql二次注入。

数组相关

bool in_array(mixed $needle, array $haystack[bool$strict=FALSE])

在haystack中搜索needle, 如果没有设置strict则使用宽松的比较。

该函数有一个特性,比较之前会进行自动类型转换。

$a='1abc';

in_array($a,array(1, 2,3) ) 的返回值会是真